package org.lintcode_Close.Stage1_Easy_50.O3数组与循环;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: qingle
 * @Date: 2024/8/17-10:06
 * @Description:
 * @version: 1.0
 */
public class 打印X {

	public static List<String> printX(int n) {
		// write your code here
		List<String> results = new ArrayList<>();

		char[][] line = new char[n][n];
		for(int i =0; i < n; i++) {
			for(int j =0; j < n; j++) {
				line[i][j] = ' ';
				if (j == i || i + j == n -1) {
					line[i][j] = 'X';
				}
			}
		}

		// 展开二位数组
		for(int i =0; i < n; i++) {
			String result = "";
			for(int j =0; j < n; j++) {
				result += String.valueOf(line[i][j]);
			}
			results.add(result);
		}

		return results;

	}

	// 方法二：
	public static List<String> printX2(int n) {
		ArrayList<String> res = new ArrayList<>();
		char[] line = new char[n];// 创建一个长度为n的字符型数组line
		for (int i = 0; i < n; i++) { // 外循环遍历正整数n的次数
			for (int j = 0; j < n; j++) {
				line[j] = ' ';// 初始化字符型数组的每个属性
			}
			line[i] = 'X'; // 左边对未知赋值"x"
			line[n-i-1] = 'X'; // 右边对未知赋值"x"
			res.add(String.valueOf(line));
		}
		return res;
	}

	public List<String> printX3(int n) {
		ArrayList<String> res=new ArrayList<>();//创建一个存放String类型属性的ArrayList，名称为res
		char[] line=new char[n];//创建一个长度为n的字符型数组line
		for(int i=0;i<n;i++){//外循环遍历正整数n的次数
			for(int j=0;j<n;j++){//该循环为了辅助初始化字符型数组中的每个属性
				line[j]=' ';//初始化字符型数组中的每个属性
			}
			line[i]='X';//左边对应位置赋值"X“
			line[n-i-1]='X';//右边对应位置赋值“X”
			res.add(String.valueOf(line));//将得到的line转换成字符串的形式增加到ArrayList
		}
		return res;//返回ArrayList
	}


	public static void main(String[] args) {
    int n = 2;
		List<String> strings = printX(n);
		for (String string : strings) {
			System.out.println(string);
		}
	}
}
